﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Hotel_Admin.Common;
using HOTEL.Dao;
using Hotel.Util;
using Hotel.Domain;
using Hotel_Admin.Web.Common;

namespace Hotel_Admin
{
    public partial class QuanLyGiaLoaiPhong : Authentication
    {
        private GiaPhongDao giaphongDao = new GiaPhongDao();
        protected void Page_Load(object sender, EventArgs e)
        {
            CheckViewPermission();
            if (!Page.IsPostBack)
            {
                LoadReference();
                BindDataForGird();
            }
        }
        protected BANG_GIA_PHONG HangPhong
        {
            get
            {
                if (!IsValidData())
                {
                    return null;
                }
                BANG_GIA_PHONG obj = new BANG_GIA_PHONG();
                obj.MaLoaiPhong = int.Parse(ddlLoaiPhong.SelectedValue);

                obj.MaHangPhong = int.Parse(ddlHangPhong.SelectedValue);
                obj.Gia = int.Parse(txtPrice.Text.Trim());
                return obj;
            }
            set
            {
                hddata.Value = value.MaLoaiPhong.ToString() + "-" + value.MaHangPhong.ToString();
                var loaiphong = ddlLoaiPhong.Items.FindByValue(value.MaLoaiPhong.ToString());
                if (loaiphong != null) ddlLoaiPhong.SelectedIndex = ddlLoaiPhong.Items.IndexOf(loaiphong);
                var hangphong = ddlHangPhong.Items.FindByValue(value.MaHangPhong.ToString());
                if (hangphong != null) ddlHangPhong.SelectedIndex = ddlHangPhong.Items.IndexOf(hangphong);
                txtPrice.Text = value.Gia.HasValue ? value.Gia.Value.ToString() : "";
                upInfor.Update();
            }
        }
        protected bool IsValidData()
        {
            if (String.IsNullOrEmpty(txtPrice.Text.Trim()))
            {
                ShowError("Giá không được trống", txtPrice.ClientID);
                return false;
            }
            else
            {
                var gia = ConvertUtil.ToInteger(txtPrice.Text.Trim());
                if (!gia.HasValue)
                {
                    ShowError("Giá là số nguyên", txtPrice.ClientID);
                    return false;
                }
            }
            var hangphong = ConvertUtil.ToInteger(ddlHangPhong.SelectedValue);
            if (!hangphong.HasValue)
            {
                ShowError("Bạn vui lòng chọn hạng phòng", ddlHangPhong.ClientID);
                return false;

            }
            var loaiphong = ConvertUtil.ToInteger(ddlLoaiPhong.SelectedValue);
            if (!loaiphong.HasValue)
            {
                ShowError("Bạn vui lòng chọn hạng phòng", ddlLoaiPhong.ClientID);
                return false;
            }
            return true;
        }
        protected void LoadReference()
        {
            CommonFunc.BindDropDownList(ddlHangPhong, new HangPhongDao().GetList(), "TenHangPhong", "MaHangPhong", true);
            CommonFunc.BindDropDownList(ddlLoaiPhong, new LoaiPhongDao().GetList(), "TenLoaiPhong", "MaLoaiPhong", true);
            txtPrice.Text = "0";
        }
        protected void BindDataForGird()
        {
            var list = giaphongDao.Search(ConvertUtil.ToInteger(txtPrice.Text.Trim()), ConvertUtil.ToInteger(ddlLoaiPhong.SelectedValue),
                ConvertUtil.ToInteger(ddlHangPhong.SelectedValue));
            gvList.DataSource = list;
            gvList.DataBind();
            upGird.Update();
        }
        protected void ClearForm()
        {
            hddata.Value = "";
            txtPrice.Text = "0";
            upInfor.Update();
        }
        protected void CheckViewPermission()
        {
            if (!HasViewPermission(Pages.QuangLyGiaPhong.GetHashCode()))
            {
                Redirect(WebURL.UrlWebDinie);
            }
        }

        protected void gvList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var require = e.CommandName;
            var data=e.CommandArgument.ToString();
            switch (require)
            {
                case "EditItem":
                    var strsplit = data.Split('-');
                    var maloaiphong=int.Parse(strsplit[0].ToString());
                    var mahangphong=int.Parse(strsplit[1].ToString());
                    var tang = giaphongDao.Get(mahangphong,maloaiphong);
                    if(tang!=null)
                    {
                        HangPhong=tang;
                    }
                    break;
            }
        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            var obj = HangPhong;
            if (obj == null) return;
            if (string.IsNullOrEmpty(hddata.Value.Trim()))
            {
                // insert
                if (!HasInsertPermission(Pages.QuangLyGiaPhong.GetHashCode()))
                {
                     Redirect(WebURL.UrlWebDinie);
                }
                var msg = giaphongDao.Insert(obj);
                if (msg.MsgType != MessageType.Info)
                {
                    ShowError("Thêm hạng phòng không thành công");
                    CloseWaitingDialog();
                }
                else
                {
                    ShowInfor("Thêm hạng phòng thành công");
                    ClearForm();
                    BindDataForGird();
                    CloseWaitingDialog();
                }
            }
            else
            {
                // update
                if (!HasUpdatePermission(Pages.QuangLyGiaPhong.GetHashCode()))
                {
                     Redirect(WebURL.UrlWebDinie);
                }
                var msg = giaphongDao.Update(obj);
                if (msg.MsgType != MessageType.Info)
                {
                    ShowError("Cập nhật thông tin hạng phòng không thành công");
                    CloseWaitingDialog();
                }
                else
                {
                    ShowInfor("Cập nhật thông tin hạng phòng thành công");
                    ClearForm();
                    BindDataForGird();
                    CloseWaitingDialog();
                }
            }
        }

        protected void btnHuy_Click(object sender, EventArgs e)
        {
            ClearForm();
            CloseWaitingDialog();
        }

        protected void btnFilter_Click(object sender, EventArgs e)
        {
            BindDataForGird();
            CloseWaitingDialog();
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
           
            // Authenticate
            if (!HasDeletePermission(Pages.QuangLyGiaPhong.GetHashCode()))
            {
                CloseWaitingDialog();
                Redirect(WebURL.UrlWebDinie);
                return;
            }
            var strIds = Request["listIds"];
            if ((strIds != null) && (!string.Empty.Equals(strIds)))
            {
                var listIds = strIds.Split(',');

                // Kiem tra relation ship truoc khi delete
                string flag = "";
                foreach (var ma in listIds)
                {
                    var strsplit = ma.Split('-');
                    var maloaiphong = int.Parse(strsplit[0].ToString());
                    var mahangphong = int.Parse(strsplit[1].ToString());
                    var nv = giaphongDao.Get(mahangphong, maloaiphong);
                    if (nv != null)
                    {
                        var msg = giaphongDao.Delete(nv);
                        if (msg.MsgType == MessageType.Error)
                        {
                            flag += msg.ToString();
                            break;
                        }
                    }
                }
                if (string.IsNullOrEmpty(flag))
                {
                    ShowInfor("Xóa hạng phòng thành Công");
                }
                else
                {
                    ShowError(flag);
                }
            }
            BindDataForGird();
            upGird.Update();
            CloseWaitingDialog();
        }
    }
}